🐳 docker | August 03, 2021
컨테이너 볼륨 명령어와 볼륨 공유를 통해 컨테이너에서 사용하는 방법을 배워봅시다.
컨테이너에 추가되는 데이터들은 별도의 RW 레이어에 저장됩니다.
-v
옵션을 통해서 볼륨을 <호스트 path>:<컨테이너 path>
형태로 만들 수 있습니다.
$ docker run -d --name db -v /dbdata:/var/lib/mysql -e MYSQL_ALLOW_EMPTY_PASSWORD=pass mysql:latest
-v <호스트 path>:<컨테이너 path>:<read write mode>
: ReadOnly 등의 옵션을 지정할 수 있습니다.
ro
옵션을 부여하게 되면, 컨테이너 안에서 데이터 수정 불가능-v <컨테이너 path>
: 자동으로 /var/lib/docker/volumes/uuid/\data_ 폴더에 데이터가 보존됩니다.# df라는 이름의 컨테이너 생성 후 /webdata에 데이터를 볼륨 마운트
$ docker run -v /webdata:/webdata -d --name df swjoolinux/df:latest
# 우분투 이미지를 사용하는 컨테이너에서 /webdata에 쌓인 데이터를 ro(readonly)로 사용
$ docker run -d -v /webdata:/usr/share/nginx/html:ro ubuntu:latest
도커 이미지를 실행 및 /dbdata에 저장하기
$ docker run -d --name db -v /dbdata:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=pass mysql:latest
$ docker exec -it db /bin/bash
$ mysql -u root -ppass
# mysql
# 데이터베이스 확인
show databases;
# swjoo - database 만들기
create database swjoo;
exit # mysql out
exit # 컨테이너 out
$ cd /dbdata/
$ ls
# swjoo 폴더가 생성되어 있음을 확인
$ docker rm -f db
$ cd /dbdata
/var/lib/docker/volumes/UUID(고유이름-inspect로 확인가능)/_data
폴더에 데이터가 생성됩니다.$ docker run -d --name db -v /var/lib/mysql -e MYSQL_ROOT_PASSWORD=pass mysql:latest
$ docker volume ls
$ docker volume rm 볼륨 아이디
$ mkdir /webdata && cd /webdata
$ echo "<h1>youtube swjoo</h1>" > index.html
볼륨을 이용한 nginx 컨테이너 실행 및 curl
명령어로 검증
$ docker run -d --name web -v /webdata:/usr/share/nginx/html:ro -p 80:80 nginx:latest
$ curl localhost:80
df 명령어
$ df -h /
쉘 스크립트 생성
$ cat df.sh
#!/bin/bash
mkdir -p /webdata
while true
do
df -h / > /webdata/index.html # root의 파일시스템 모니터링 데이터를 생성 후, 리다이렉트
sleep 10
done
$ cat dockerfile
FROM ubuntu:18.04
ADD df.sh /bin/df.sh
RUN chmod +x /bin/df.sh
ENTRYPOINT ["/bin/df.sh"]
$ docker build -t alskadmlcraz/df:latest .
$ docker run -v /webdata:/webdata -d alskadmlcraz/df:latest
$ docker run -d --name web -v /webdata:/usr/share/nginx/html:ro -p 80:80 nginx:latest
$ curl localhost:80
# 아래 다수의 데이터가 쌓여 있는 것을 확인할 수 있음
Filesystem Size Used Avail Use% Mounted on
overlay 17G 4.9G 11G 31% /
Filesystem Size Used Avail Use% Mounted on
overlay 17G 4.9G 11G 31% /
Filesystem Size Used Avail Use% Mounted on
overlay 17G 4.9G 11G 31% /
Filesystem Size Used Avail Use% Mounted on
overlay 17G 4.9G 11G 31% /
Filesystem Size Used Avail Use% Mounted on
overlay 17G 4.9G 11G 31% /
Filesystem Size Used Avail Use% Mounted on
overlay 17G 4.9G 11G 31% /
Filesystem Size Used Avail Use% Mounted on
overlay 17G 4.9G 11G 31% /
Filesystem Size Used Avail Use% Mounted on
overlay 17G 4.9G 11G 31% /
...
$ docker system prune